package com.example.leetcode.trainingcamp.week12;

import com.example.leetcode.prcatice.Test;

/**
 * 整数转换。编写一个函数，确定需要改变几个位才能将整数A转成整数B。
 *
 * 示例1:
 *
 *  输入：A = 29 （或者0b11101）, B = 15（或者0b01111）
 *  输出：2
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/convert-integer-lcci
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Test05_06 {

    // 11101
    // 01111
    // 01101
    // 10010
    // 00001
    public int convertInteger(int A, int B) {
        // 异或操作相同为1，不同为0
        int i = A ^ B;
        int mask = 1;
        int r = 0;
        for (int j =0;j<32;j++){
            int t = mask & i;
            if (t != 0){
                r++;
            }
            mask <<= 1;
        }
        return r;
    }


    public static void main(String[] args) {
        Test05_06 t = new Test05_06();
        System.out.println(t.convertInteger(29, 15));
    }
}
